# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time      :2022/7/22 0022 0:46
# @Author    :jiaxuesong

'''
查找测试用例，生成测试套件
    unittest.TestLoader()/unittest.defaultTestLoader()
    实例化testloader()类
    调用discover方法生成测试套件
    返回测试套件

运行测试套件，生成测试报告
    创建测试报告名及路径
    以写入模式打开文件
    实例化HTMLTestRunner得到一个runner对象
    调用实例方法执行测试用例
    关闭文件

清理报告
    方案二：保留最新的N个
        os.dirlist()获取某个文件下全部文件
        得到一个列表
        循环删除每一个文件os.remove
'''

import unittest
import time, os

import HTMLTestRunner
import hight_interface_test.HTMLTestRunner
from hight_interface_test.common.sendEmail import *


# 查找测试用例，生成测试套件
def creat_suite():
#     unittest.TestLoader()/unittest.defaultTestLoader()
# 获取用例目录
    case_path = os.path.dirname(__file__) + r'/testCase/'
#     实例化testloader()类
    loader = unittest.TestLoader()
#     调用discover方法生成测试套件
    suit = loader.discover(start_dir=case_path, pattern='test*.py')
#     返回测试套件
    return suit


# 清理报告
def report_clear():
#     方案二：保留最新的N个
    dir = os.path.dirname(__file__) + r'/testReport'
#         os.dirlist()获取某个文件下全部文件
    dir_list = os.listdir(dir)
#         得到一个列表
    for i in dir_list[:-3]:
#         循环删除每一个文件os.remove
        if '.html' in i:
            os.remove(dir + '/' + i)

if __name__ == '__main__':
    report_clear()
    # 运行测试套件，生成测试报告
    suit = creat_suite()
    cur_time = time.strftime('%Y_%d_%m_%H_%M_%S', time.localtime())
    # 创建测试报告名及路径
    report = os.path.dirname(__file__) + r'/testReport/' + cur_time + r'_report.html'
    # 以写入模式打开文件
    with open(report, 'wb') as fp:
    # 实例化HTMLTestRunner得到一个runner对象
        runner = hight_interface_test.HTMLTestRunner.HTMLTestReportCN(stream=fp, verbosity=2, title='接口自动化测试结果', description='接口测试结果')
    # 调用实例方法执行测试用例
        runner.run(suit)
    # 发送邮件
    # 实例化发送邮件方法
    # se = SendEmail()
    # se.send_email(report)